/**
 * @author Laboratio Av I
 * @since 18/04/2012 14:03:56
 */
package ar.edu.utn.frgp.banco.dao.impl;

import java.sql.Connection;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;



import ar.edu.utn.frgp.banco.dao.PagoPrestamosDao;
import ar.edu.utn.frgp.banco.dao.connection.ConnectionHandler;
import ar.edu.utn.frgp.banco.dao.connection.IConnectionHandler;
import ar.edu.utn.frgp.banco.domain.PagoPrestamo;
import ar.edu.utn.frgp.banco.exceptions.DataAccessException;


public class PagoPrestamosDaoImpl implements PagoPrestamosDao {
	
	public void altaPagoPrestamo(PagoPrestamo prestamo) throws DataAccessException {

		PreparedStatement ps = null;
		
		IConnectionHandler handler = new ConnectionHandler();
		Connection cn = handler.getConnection();
		
		try {
			
			java.util.Date utilDate = new java.util.Date();
			
			java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());

							
			ps = cn.prepareStatement("INSERT INTO pagoprestamos VALUES(?,?,?,?,?,?)");
			
			ps.setInt   (1, prestamo.getIdpagoprestamo());
			ps.setInt   (2, prestamo.getIdprestamo());
			ps.setDate  (3, sqlDate);
			ps.setInt   (4, prestamo.getOrigen());
			ps.setInt   (5, prestamo.getDni());
			ps.setInt   (6, prestamo.getNrocuenta());
			
			ps.executeUpdate();
			
		} catch (SQLException e) {
			throw new DataAccessException(e);
		} finally {
			handler.closeResources(ps, cn);
		}

	}
	
	public List<PagoPrestamo> traerTodosLosPagosDePrestamos() throws DataAccessException {
		  Statement st = null;
	      ResultSet rs = null;
			
			IConnectionHandler handler = new ConnectionHandler();
			Connection cn = handler.getConnection();
			
			List<PagoPrestamo> pagoPrestamos = new ArrayList<PagoPrestamo>();
			
			try {
				st = cn.createStatement();
				rs = st.executeQuery("SELECT * FROM pagoprestamos");
				
				PagoPrestamo regPagoPrestamo = null;
				
				while (rs.next()) {
					
					regPagoPrestamo = new PagoPrestamo();
					

					regPagoPrestamo.setIdpagoprestamo(rs.getInt("idpagoprestamo"));
					regPagoPrestamo.setIdprestamo(rs.getInt("idprestamo"));
					regPagoPrestamo.setFecha(rs.getDate("fecha"));
					regPagoPrestamo.setOrigen(rs.getInt("origen"));
					regPagoPrestamo.setDni(rs.getInt("dni"));
					regPagoPrestamo.setNrocuenta(rs.getInt("nrocuenta"));
					
					
					pagoPrestamos.add(regPagoPrestamo);
				}
						
							
			} catch (SQLException e) {
				System.out.println("Error al crear tablas.");
				e.printStackTrace();			
			} finally {
				handler.closeResources(st, cn);
			}
		return pagoPrestamos;
	}

	

	public List<PagoPrestamo> traerTodosLosPagosDePrestamosDelCliente(int dni) throws DataAccessException {
		  Statement st = null;
	      ResultSet rs = null;
			
			IConnectionHandler handler = new ConnectionHandler();
			Connection cn = handler.getConnection();
			
			List<PagoPrestamo> prestamos = new ArrayList<PagoPrestamo>();
			
			try {
				st = cn.createStatement();
				rs = st.executeQuery("SELECT * FROM pagoprestamos WHERE pagoprestamos.dni = " + dni);
				
				PagoPrestamo regPagoPrestamo = null;
				
				while (rs.next()) {
					
					regPagoPrestamo = new PagoPrestamo();
					
					regPagoPrestamo.setIdpagoprestamo(rs.getInt("idpagoprestamo"));
					regPagoPrestamo.setIdprestamo(rs.getInt("idprestamo"));
					regPagoPrestamo.setFecha(rs.getDate("fecha"));
					regPagoPrestamo.setOrigen(rs.getInt("origen"));
					regPagoPrestamo.setDni(rs.getInt("dni"));
					regPagoPrestamo.setNrocuenta(rs.getInt("nrocuenta"));
					
					prestamos.add(regPagoPrestamo);
				}
						
							
			} catch (SQLException e) {
				System.out.println("Error al crear tablas.");
				e.printStackTrace();			
			} finally {
				handler.closeResources(st, cn);
			}
		return prestamos;
	}
	
	
	public PagoPrestamo traerElPagoDePrestamo(int nroPagoPrestamo) throws DataAccessException {
		  Statement st = null;
	      ResultSet rs = null;
	      PagoPrestamo prestamo = null;
	      
			IConnectionHandler handler = new ConnectionHandler();
			Connection cn = handler.getConnection();
			
			
			try {
				st = cn.createStatement();
				rs = st.executeQuery("SELECT * FROM pagoprestamos WHERE pagoprestamos.idprestamo = " + nroPagoPrestamo);
							
				while (rs.next()) {
					
					prestamo = new PagoPrestamo();
					
					prestamo.setIdpagoprestamo(rs.getInt("idpagoprestamo"));
					prestamo.setIdprestamo(rs.getInt("idprestamo"));
					prestamo.setFecha(rs.getDate("fecha"));
					prestamo.setOrigen(rs.getInt("origen"));
					prestamo.setDni(rs.getInt("dni"));
					prestamo.setNrocuenta(rs.getInt("nrocuenta"));
				}
									
			} catch (SQLException e) {
				System.out.println("Error al crear tablas.");
				e.printStackTrace();			
			} finally {
				handler.closeResources(st, cn);
			}
		return prestamo;
	}

@Override
public List<PagoPrestamo> traerTodosLosRegistrosDeCuotasPagas(int idprestamo)throws DataAccessException {
	
	
	Statement st = null;
    ResultSet rs = null;
		
		IConnectionHandler handler = new ConnectionHandler();
		Connection cn = handler.getConnection();
		
		List<PagoPrestamo> pagosPrestamos = new ArrayList<PagoPrestamo>();
		
		try {
			st = cn.createStatement();
			rs = st.executeQuery("SELECT * FROM pagoprestamos WHERE pagoprestamos.idprestamo = " + idprestamo);
			
			PagoPrestamo regPagoPrestamo = null;
			
			while (rs.next()) {
				
				regPagoPrestamo = new PagoPrestamo();
				
				regPagoPrestamo.setIdpagoprestamo(rs.getInt("idpagoprestamo"));
				regPagoPrestamo.setIdprestamo(rs.getInt("idprestamo"));
				regPagoPrestamo.setFecha(rs.getDate("fecha"));
				regPagoPrestamo.setOrigen(rs.getInt("origen"));
				regPagoPrestamo.setDni(rs.getInt("dni"));
				regPagoPrestamo.setNrocuenta(rs.getInt("nrocuenta"));
			
				pagosPrestamos.add(regPagoPrestamo);
			}
		} catch (SQLException e) {
			System.out.println("Error al crear tablas.");
			e.printStackTrace();			
		} finally {
			handler.closeResources(st, cn);
		}
	return pagosPrestamos;
	
}
	
	
	
	
	
	
	
	
	
	
	
	
	
}